/*
 *Ext.onReady的函数,以防止页面元素未全部加载就执行代码了,那么有些函数就不能执行了.
 */

Ext.onReady(function() {
	Ext.lib.Ajax.defaultPostHeader += '; charset=utf-8';//处理ie提交中文乱码问题

	/**
	 * 销售渠道菜单
	 */
	var storeCustomer = new Ext.data.Store({
			baseParams : {
				trancode : 'Customer'
			},
	         proxy: new Ext.data.HttpProxy({
	                url:'../'+WebServiceUrl
	            }),
	            reader: new Ext.data.JsonReader({root: 'root'},[
	            	{name:'idtclient',type:'int'},
	                {name:'accountname',type:'string'}
	         ])
	});
	var customerId=new Ext.form.ComboBox({
          store:storeCustomer,
          allowBlank:false,
          triggerAction:'all',
          displayField:'accountname',
          tabIndex : 1,
          valueField:'accountname',
          fieldLabel:'客户名称',
          hiddenName:'idtclient',
          model:'remote',
          editable:true, 
          anchor:'90%',
          emptyText:'请选择客户'
   });
	/**
	 * 员工信息
	 */   
    var storeTperson = new Ext.data.Store({
			baseParams : {
				trancode : 'Tperson'
			},
	         proxy: new Ext.data.HttpProxy({
	                url:'../'+WebServiceUrl
	            }),
	            reader: new Ext.data.JsonReader({root: 'root'},[
	            	{name:'idt_person',type:'int'},
	                {name:'pname',type:'string'}
	                
	         ])
	});
	var salesrepId=new Ext.form.ComboBox({
          store:storeTperson,
        //  allowBlank:false,
          triggerAction:'all',
          displayField:'pname',
          tabIndex : 1,
          valueField:'idt_person',
          fieldLabel:'销售人员',
          hiddenName:'idt_person',
          model:'remote',
          editable:false, 
          anchor:'90%',
          emptyText:'请选择销售人员'
   });
   var responsiblePid=new Ext.form.ComboBox({
          store:storeTperson,
         // allowBlank:false,
          triggerAction:'all',
          displayField:'pname',
          tabIndex : 1,
          valueField:'idt_person',
          fieldLabel:'经 办 人',
          hiddenName:'idt_person',
          model:'remote',
          editable:false, 
          anchor:'90%',
          emptyText:'请选择经办人'
   });
/**
* 机构信息
*/
	var storeDept = new Ext.data.Store({
			baseParams : {
				trancode : 'Dept'
			},
	         proxy: new Ext.data.HttpProxy({
	                url:'../'+WebServiceUrl
	            }),
	            reader: new Ext.data.JsonReader({root: 'root'},[
	            	{name:'idtDept',type:'int'},
	                {name:'deptName',type:'string'}
	                
	         ])
	});
	var deptId=new Ext.form.ComboBox({
          store:storeDept,
          allowBlank:false,
          triggerAction:'all',
          displayField:'deptName',
          tabIndex : 1,
          valueField:'idtDept',
          fieldLabel:'部门名称',
          hiddenName:'idtDept',
          model:'remote',
          editable:false, 
          anchor:'90%',
          emptyText:'请选择部门名称'
   }); 
   
   /**
	 * 订单类型菜单
	 */
	var storeOrderType = new Ext.data.Store({
			baseParams : {
				trancode : 'OrderType'
			},
	         proxy: new Ext.data.HttpProxy({
	                url:'../'+WebServiceUrl
	            }),
	            reader: new Ext.data.JsonReader({root: 'root'},[
	                {name:'ordername',type:'string'},
	                {name:'idtOrdertype',type:'int'}
	         ])
	});
	var orderName=new Ext.form.ComboBox({
          store:storeOrderType,
          allowBlank:false,
          triggerAction:'all',
          displayField:'ordername',
          tabIndex : 4,
          valueField:'idtOrdertype',
          fieldLabel:'订单类型',
          hiddenName:'idtOrdertype',
          model:'remote',
          editable:false, 
          anchor:'90%',
          emptyText:'请选择订单类型'
   }); 
   
   /**
	 * 销售渠道菜单
	 */
	var storeSaleChannel = new Ext.data.Store({
			baseParams : {
				trancode : 'SaleChannel'
			},
	         proxy: new Ext.data.HttpProxy({
	                url:'../'+WebServiceUrl
	            }),
	            reader: new Ext.data.JsonReader({root: 'root'},[
	                {name:'meaning',type:'string'},
	                {name:'salesChannelCode',type:'int'}
	         ])
	});
	var meaning=new Ext.form.ComboBox({
          store:storeSaleChannel,
          allowBlank:false,
          triggerAction:'all',
          displayField:'meaning',
          tabIndex : 7,
          valueField:'salesChannelCode',
          fieldLabel:'销售渠道',
          hiddenName:'salesChannelCode',
          model:'remote',
          editable:false, 
          anchor:'90%',
          emptyText:'请选择销售渠道'
   }); 
   
    /**
	 * 价目表菜单
	 */
	var storePriceList = new Ext.data.Store({
			baseParams : {
				trancode : 'PriceList'
			},
	         proxy: new Ext.data.HttpProxy({
	                url:'../'+WebServiceUrl
	            }),
	            reader: new Ext.data.JsonReader({root: 'root'},[
	                {name:'namelistName',type:'string'},
	                {name:'idtPricelist',type:'int'}
	         ])
	});
	var priceList=new Ext.form.ComboBox({
          store:storePriceList,
        //  allowBlank:false,
          triggerAction:'all',
          displayField:'namelistName',
          tabIndex : 7,
          valueField:'idtPricelist',
          fieldLabel:'价目表名称',
          hiddenName:'idtPricelist',
          model:'remote',
          editable:false, 
          anchor:'90%',
          emptyText:'请选择价目表名称'
   }); 
   
   var sm = new Ext.grid.CheckboxSelectionModel({handleMouseDown: Ext.emptyFn});
   
	var cm = new Ext.grid.ColumnModel([ sm ,
	{
		header : '生产周期(天)',
		dataIndex : 'productdate',
		width : 80,
		editor : new Ext.form.NumberField({
			allowBlank : false,
			allowNegative : false,
			minValue : 0
		})
	},	
	{header : '计划发货日期',
		dataIndex : 'request_date',
		width : 110,
		renderer: function(v){
				return v ? v.dateFormat('Y年m月d日') : '';
			},
		editor : new Ext.form.DateField({
			readOnly:true,
			format: 'Y-m-d',
	       allowBlank : false
		})
	}, {
		header : '计划理货日期',
		dataIndex : 'schedule_ship_date',
		width : 110,
		renderer: function(v){
				return v ? v.dateFormat('Y年m月d日') : '';
			},
		editor : new Ext.form.DateField({
			readOnly:true,
			format: 'Y-m-d'
		}),
		allowBlank : false		
	}, {
		header : '计划到货日期',
		dataIndex : 'schedule_arrival_date',
		width : 110,
		renderer: function(v){
				return v ? v.dateFormat('Y年m月d日') : '';
			},
		editor : new Ext.form.DateField({
			readOnly:true,
			format: 'Y-m-d'
		}),
		allowBlank : false
	}, {
		header : '产品名称',
		dataIndex : 'goodsname',
		width : 80		
	}, {
		header : '产品规格',
		dataIndex : 'spec',
		width : 80	
	}, {
		header : '价格',
		dataIndex : 'sale_price',
		width : 80,
		renderer: rmbMoney,
		editor : new Ext.form.NumberField({
			allowBlank : false,
			allowNegative : false,
			minValue : 0
		})
	}, {
		header : '订单数量(套)',
		dataIndex : 'order_quantity_uom',
		width : 80,
		editor : new Ext.form.NumberField({
			allowBlank : false,
			allowNegative : false,
			minValue : 0
		})
	}, {
		header : '门片数',
		dataIndex : 'attrib1',
		width : 80,
		editor : new Ext.form.NumberField({
			allowBlank : false,
			allowNegative : false,
			minValue : 0
		})
	},
			//{header:'长单位',dataIndex:'attrib1_unit',width: 80,editor: new Ext.form.ComboBox({store : new Ext.data.SimpleStore({data : [['毫米', 'mm'], ['厘米', 'cm'],['米','m']]}),mode : 'local',forceSelection : true,blankText : '请选择单位',emptyText : '请选择单位',width : 125,editable : false,triggerAction : 'all',allowBlank : false })},
			{
				header : '单位',
				dataIndex : 'attrib1_unit',
				width : 80,
				editor : new Ext.form.TextField({
					allowBlank : false
				})
			}, {
				header : '门片宽',
				dataIndex : 'attrib2',
				width : 80,
				editor : new Ext.form.NumberField({
					allowBlank : false,
					allowNegative : false,
					minValue : 0
				})
			}, {
				header : '宽单位',
				dataIndex : 'attrib2_unit',
				width : 80,
				editor : new Ext.form.TextField({
					allowBlank : false
				})
			}, {
				header : '门片高',
				dataIndex : 'attrib3',
				width : 80,
				editor : new Ext.form.NumberField({
					allowBlank : false,
					allowNegative : false,
					minValue : 0
				})
			}, {
				header : '高单位',
				dataIndex : 'attrib3_unit',
				width : 80,
				editor : new Ext.form.TextField({
					allowBlank : false
				})
			}, {
				header : '款式',
				dataIndex : 'attrib4',
				width : 80,
				editor : new Ext.form.NumberField({
					allowBlank : false,
					allowNegative : false,
					minValue : 0
				})
			}, {
				header : '款式单位',
				dataIndex : 'attrib4_unit',
				width : 80,
				editor : new Ext.form.TextField({
					allowBlank : false
				})
			}, {
				header : '属性',
				dataIndex : 'attrib5',
				width : 80,
				editor : new Ext.form.NumberField({
					allowBlank : false,
					allowNegative : false,
					minValue : 0
				})
			}, {
				header : '属性单位',
				dataIndex : 'attrib5_unit',
				width : 80,
				editor : new Ext.form.TextField({
					allowBlank : false
				})
			}                                                                                                                                
	]);
	cm.defaultSortable = true;
	cm.setHidden(2,!cm.isHidden(2));//隐藏单位列
	cm.setHidden(3,!cm.isHidden(3));//隐藏单位列
	cm.setHidden(4,!cm.isHidden(4));	
	cm.setHidden(10,!cm.isHidden(10));//隐藏单位列
	cm.setHidden(12,!cm.isHidden(12));//隐藏单位列
	cm.setHidden(14,!cm.isHidden(1));//隐藏单位列
	cm.setHidden(16,!cm.isHidden(16));//隐藏单位列
	cm.setHidden(18,!cm.isHidden(18));//隐藏单位列
	//定义一个数据存储空间ds将存明细数据
	var ds = new Ext.data.Store({
		reader : new Ext.data.ArrayReader({}, [{
			name : 'line_id'
		},{
		    name :'productdate'
		},{
			name : 'request_date'
		}, {
			name : 'schedule_ship_date'
		}, {
			name : 'schedule_arrival_date'
		}, {
			name : 'goodid'
		}, {
			name : 'goodsname'
		}, {
			name : 'spec'
		}, {
			name : 'sale_price'
		}, {
			name : 'order_quantity_uom'
		}, {
			name : 'flow_status_code'
		}, {
			name : 'attrib1'
		}, {
			name : 'attrib1_unit'
		}, {
			name : 'attrib2'
		}, {
			name : 'attrib2_unit'
		}, {
			name : 'attrib3'
		}, {
			name : 'attrib3_unit'
		}, {
			name : 'attrib4'
		}, {
			name : 'attrib4_unit'
		}, {
			name : 'attrib5'
		}, {
			name : 'attrib5_unit'
		}])
	});
	//表头信息
	var top = new Ext.FormPanel({
		labelAlign : 'right',
		id : 'top',
		frame : true,
		url :'../'+WebServiceUrl,
		title : '销售信息添加',
		bodyStyle : 'padding:5px 5px 0',
		width : '100%',
		height : 260,
		items : [{
			layout : 'column',
			items : [{
				columnWidth : .5,
				layout : 'form',
				items : [customerId, {
					xtype : 'combo',
					store : new Ext.data.SimpleStore({
						fields : ["freight_terms_id", "orderdeptName"],
						data : [['0', '我方承担'], ['1', '对方承担'], ['2', '共同承担']]
					}),
					valueField : "freight_terms_id",
					displayField : "orderdeptName",
					mode : 'local',
					forceSelection : true,
					tabIndex : 2,
					blankText : '请选择运费承担方式',
					emptyText : '选择运费承担方式',
					hiddenName : 'freight_terms_id',
					editable : false,
					triggerAction : 'all',
					allowBlank : false,
					fieldLabel : '运费承担方式',
					anchor : '90%'
				}]
			}, {
				columnWidth : .5,
				layout : 'form',
				items : [orderName,priceList]
			}, {
				columnWidth : .5,
				layout : 'form',
				items : [salesrepId,responsiblePid]
			}, {
				columnWidth : .5,
				layout : 'form',
				items : [meaning,deptId]
			}, {
				columnWidth : .5,
				layout : 'form',
				items : [{
					columnWidth : .5,
					layout : 'form',
					items : [{
						xtype : 'datefield',
						fieldLabel : '接单日期',
						format : "Y-m-d",
						tabIndex : 9,
						readOnly : true,
						allowBlank : false,
						name : 'ordered_date',
						id : 'ordered_date',
						value:new Date(),
						anchor : '90%'
					},					
					{
					xtype : 'textfield',
					fieldLabel : '顾客姓名',
					tabIndex : 1,
					maxLength : 16,
					//allowBlank : false,
					name : 'suser',
					id:'suser',
					anchor : '90%'
				},{
					xtype : 'textfield',
					fieldLabel : '顾客电话',
					tabIndex : 1,
					maxLength : 16,
					//allowBlank : false,
					name : 'susertel',
					id:'susertel',
					anchor : '90%'
				},{
					xtype : 'textfield',
					fieldLabel : '顾客地址',
					tabIndex : 1,
					maxLength : 16,
					//allowBlank : false,
					name : 'suseraddress',
					id:'suseraddress',
					anchor : '90%'
				}]
				}]
			}, {
				columnWidth : .5,
				layout : 'form',
				items : [{
					columnWidth : .5,
					layout : 'form',
					items : [{
					xtype : 'numberfield',
					fieldLabel : '定单金额',
					tabIndex : 8,
					maxLength : 20,
					minLength : 1,
					allowBlank : false,
					name : 'order_money',
					id : 'order_money',
					anchor : '90%'
				},{
						xtype : 'textarea',
						fieldLabel : '备  注',
						tabIndex : 10,
						maxLength : 200,
						minLength : 1,
						name : 'remark',
						id : 'remark',
						anchor : '90%'
					}]
				}]
			}]
		}]
	});
//明细信息,建立数据记录集
	 var orderTypeD = Ext.data.Record.create([
           {
			name : 'line_id'
		},{
		    name: 'productdate'
		},{
			name : 'request_date'
		}, {
			name : 'schedule_ship_date'
		}, {
			name : 'schedule_arrival_date'
		},{
		    name :'porductdate'
		}, {
			name : 'goodsid'
		}, {
			name : 'goodsno'
		}, {
			name : 'goodsname'
		}, {
			name : 'spec'
		}, {
			name : 'sale_price'
		}, {
			name : 'order_quantity_uom'
		}, {
			name : 'flow_status_code'
		}, {
			name : 'attrib1'
		}, {
			name : 'attrib1_unit'
		}, {
			name : 'attrib2'
		}, {
			name : 'attrib2_unit'
		}, {
			name : 'attrib3'
		}, {
			name : 'attrib3_unit'
		}, {
			name : 'attrib4'
		}, {
			name : 'attrib4_unit'
		}, {
			name : 'attrib5'
		}, {
			name : 'attrib5_unit'
		}	   
      ]);
      
	var grid = new Ext.grid.EditorGridPanel({
		store : ds,
		cm : cm,
		sm : sm,
		buttonAlign : 'center',
		trackMouseOver : false,
		bodyStyle : 'width:100%',
		height : 280,
		title : '销售明细',
		frame : true,
		autoScroll:true,
		clicksToEdit : 1,
		tbar :[
			{// 添加按钮
				text:'添加明细',
				iconCls:'add',
				handler:function(){
					new App.CheckBoxGrid(grid);
				}
			},'-',{//删除按钮
				id:'btnDelete',
				text:'删除明细',
				iconCls:'remove',
				handler:function(){
					var selected = grid.getSelectionModel().getSelections();				
					
					if(selected.length==0){
						
						Ext.MessageBox.alert('提示信息','请选择至少一条明细删除！');
						
					}else{
						
						for(var i=0;i<selected.length;i++){
							ds.remove(selected[i]);
	
						}
					}
									
				}
			}
		],
		buttons : [{
			text : '保 存',
			tabIndex : 24,
			handler : function() {
				if (top.form.isValid()) {
					var json = [];
					for(i=0,cnt=ds.getCount();i<cnt;i+=1){
						var record = ds.getAt(i);//从ds store临时储存空间里读取值到RECORD里
						//if(record.dirty) // 得到所有修改过的数据
							json.push(record.data);//json是一种储存格式是XML的简化版
					}
					if(json.length==0){
						Ext.Msg.alert('提示信息','至少一条明细信息！');
						return;
					}
					//alert(json);
					top.form.submit({
						waitTitle : "请稍候",
						waitMsg : '正在保存数据...',
						params : {trancode : '21112',salesordersd:Ext.encode(json)},//salesordersd:Ext.encode(json)是用于保存明细数据的
						method : 'Post',
						failure : function() {
							Ext.MessageBox.alert('操作失败', '联系管理员');
						},
						success : function(form, action) {
							if (action.result.success) 
							{
								Ext.MessageBox.alert('操作成功',action.result.message);
								top.form.reset();
								grid.getStore().removeAll();
							} 
							else 
							{
								Ext.MessageBox.alert('操作失败',action.result.message);
							}
						}
					});
				} else {
					Ext.MessageBox.alert('输入错误', '请输完内容后再保存！');
				}
			}
		}, {
			text : '取 消',
			tabIndex : 24,
			handler : function() {top.getForm().reset();}
		}]
	});
	top.render(document.body);
	grid.render(document.body);
});